home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-09-22 | 3.8 KB | 109 lines |
- DEFINITION MODULE M2Loader; (* C. Vetterli, 22-Dec-85 / 22-Dec-85 *)
-
- FROM SYSTEM IMPORT ADDRESS;
- FROM GEMX IMPORT BasePage;
-
-
- CONST
- MaxPrograms = 6;
-
-
- TYPE
- Status = (normal, moduleNotFound, fileNotFound, illegalKey, readError,
- badSyntax, noMemory, alreadyLoaded, killed, tooManyPrograms,
- continue, noApplication);
-
- ModuleName = ARRAY[0..21] OF CHAR; (* 16 Byte for name *)
- (* 3 Words for key *)
- ProcEntryPtr = POINTER TO ProcEntryDesc;
-
- ProcEntryDesc = RECORD
- flags: INTEGER;
- procModRef: ARRAY[0..255] OF LONGINT
- END;
-
- ModulePtr = POINTER TO ModuleDesc;
-
- ModuleDesc = RECORD
- link: ModulePtr;
- modPtr: ADDRESS;
- modSize: LONGINT;
- dataPtr: ProcEntryPtr;
- valA4: LONGINT;
- mName: ModuleName;
- numOfMods,
- numOfProcs,
- codeLen,
- level: INTEGER;
- leaveLoaded: BOOLEAN
- END;
-
- ErrMessProc = PROCEDURE(Status);
-
- BeginHaltProc = PROC; (*DS*)
- EndHaltProc = PROCEDURE(BOOLEAN); (*TRUE:PRG Weiter, FALSE:PRG Abbruch *)
-
- VAR
- DisplayLoaderStatus: ErrMessProc; (* link your own message handler *)
- BasePagePtr: POINTER TO BasePage;
- SystemDrive: CHAR;
- SystemPath: ARRAY [0..63] OF CHAR;
- curLevel: INTEGER; (*DS*)
- debugResident: BOOLEAN; (*DS*)
- BeginHalt: BeginHaltProc; (* wird am Anfang bzw. am Ende des *)
- EndHalt: EndHaltProc; (* HaltHandlers aufgerufen *)
-
- (* fuer die Beschreibung der folgenden Funktionen siehe MacMETH User Manual *)
-
- PROCEDURE Allocate (VAR ptr: ADDRESS; size : LONGINT);
- PROCEDURE Deallocate (VAR ptr : ADDRESS);
-
- PROCEDURE Call (module, cmdline: ARRAY OF CHAR; leaveLoaded: BOOLEAN;
- VAR status: Status);
- PROCEDURE Terminate (status: Status);
- PROCEDURE DisplayStatus (status: Status);
-
- PROCEDURE GetProcessStatus (VAR err: ARRAY OF CHAR);
- PROCEDURE GetNextModule (VAR modNo: INTEGER; VAR dataBase: LONGINT;
- VAR modName: ARRAY OF CHAR);
- PROCEDURE GetNextProcedure (VAR modNo: INTEGER; VAR dataBase: LONGINT;
- VAR relPC: INTEGER);
-
- PROCEDURE InitProcedure (init: PROC; VAR done: BOOLEAN);
- PROCEDURE TermProcedure (term: PROC; VAR done: BOOLEAN);
-
- PROCEDURE FindModule (dataBase, pc: LONGINT; VAR modPtr: ModulePtr;
- VAR relPC, modNo: INTEGER; VAR found: BOOLEAN);
-
- PROCEDURE SetError (errMP, errPC, errA4: LONGINT; errNum: INTEGER);
-
-
- (* Implementierung einer Suchstrategie für die Bibliotheksmoduln.
- Sucht benötigte Files, die nicht im aktuellen Directory
- stehen, in den Directories, die im File mit dem Namen FName
- (aktuelles Dir) eingetragen sind.
-
- Achtung: Der eingetragene Pfadname muss so sein, dass der
- Filename gerade noch angehängt zu werden braucht !
- Das betrifft insbesondere die Delimiter!! *)
-
- CONST
- maxNameLen = 39;
- tablesize = 20;
-
- TYPE
- nametype = ARRAY [0..maxNameLen] OF CHAR;
- Path = POINTER TO nametype;
-
- VAR
- Table: ARRAY [1..tablesize] OF Path;
- paths: ARRAY [1..tablesize] OF nametype;
-
- PROCEDURE FindPath (VAR p: Path; VAR FileName: ARRAY OF CHAR; VAR i: INTEGER);
-
- PROCEDURE AddPath (p: Path; VAR relFileName: ARRAY OF CHAR;
- VAR absFileName: ARRAY OF CHAR);
-
- END M2Loader.
-
-